package com.lmabbe.common.global.context;

import com.lmabbe.common.global.context.metadata.client.OauthClient;
import com.lmabbe.common.global.context.metadata.dict.SystemDict;
import com.lmabbe.common.global.context.metadata.resource.Resource;
import com.lmabbe.common.global.context.metadata.param.SystemParam;
import com.lmabbe.common.global.context.metadata.tenant.Database;
import com.lmabbe.common.global.context.metadata.tenant.MiniApp;
import com.lmabbe.common.global.context.metadata.tenant.TenantInfo;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * 租户构建上下文
 *
 * @author lmabbe
 */
@Data
@Accessors(chain = true)
public class TenantBuildContext {

    /**
     * 租户ID
     */
    private Long tenantId;

    /**
     * 租户基本信息
     */
    private TenantInfo tenantInfo;

    /**
     * 租户小程序
     */
    private List<Database> tenantDatabases;

    /**
     * 租户小程序
     */
    private List<MiniApp> tenantMiniapps;

    /**
     * 租户字典
     */
    private List<SystemDict> sysDictionaries;

    /**
     * 租户系统参数
     */
    private List<SystemParam> systemParams;

    /**
     * 租户客户端
     */
    private List<OauthClient> clients;

    /**
     * 菜单
     */
    public List<Resource> resources;

    /**
     * 当前租户构建版本
     */
    private String version;

    /**
     * 根据key 获取 参数值
     * @param key :
     * @return {@link String}
     * @date 2022/3/24 3:10 PM
     * @author liming
     */
    public String findParamByKey(String key){
        return systemParams.stream().filter(s ->s.getParamKey().equals(key))
                .findFirst().orElse(new SystemParam()).getParamValue();
    }


}
